/*
* date:20201223 10:00
key:
1.给出元素个数不定，不要用散列表大小的数组去装
2.散列表先用一个不可能出现的元素填充，否则不知道那个位置放过没有。
*/
#include<iostream>
#include<string>
using namespace std;
int Hash(int x)
{
	return x % 11;
}
int main()

{
	int* H = new int[12];
	int* array = new int[8];
	int n, k,i;
	string s;
	//37 25 14 36 49 68 57 11
	//现存入一个中转数组
	for (i = 0; i < 8 ; i++)
	{
		
		cin >> array[i];
		
	}
	//用不出现的元素初始化散列表
	for (i = 0; i < 12; i++)
	{

		H[i]=-1;
		
	}
	int p;
	for (i = 0; i < 8; i++)
	{
		//提取本次array[i]的关键码
		p = Hash(array[i]);
		//检查本次关键码对应的位置空与否
		while (H[p] != -1)//如果散列表大于要放的元素个数，则循环一定能结束
		{
			//保证了下一个p一定是0-11内的下一个关键码
			p = (p + 1) % 11;
		}
		H[p] = array[i];
		
	}
	//输出结果
	for (i = 0; i < 12; i++)
	{
		cout << H[i] << " " ;
	}
}